<!--
 * @Description: 
 * @Author: xiongkuobiao
 * @Date: 2023-02-13 09:22:55
 * @LastEditors: xiongkuobiao
 * @LastEditTime: 2023-07-19 14:51:37
-->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
</head>

<body></body>
<script>
    // let obj = {
    //     a: "str",
    //     b: 123,
    //     c: function demo() {
    //         console.log(111);
    //     },
    //     d: null,
    //     date: new Date(),
    //     RegExp: new RegExp(/7/),
    //     e: new Set([1, 2, 3]),
    //     f: new Map([
    //         ["d", 9],
    //         ["e", 10],
    //     ]),
    //     Array: [1, 2, 3, 4],
    //     Object: { name: 111, age: { log: "2222" } },
    //     ArrayObject: [{ age: 1111 }],
    // };

    // function deepClone(obj, hash = new WeakMap()) {
    //     // 处理null或者undefined
    //     if (obj === null) return obj;
    //     // 处理日期类型
    //     if (obj instanceof Date) return new Date(obj);
    //     // 处理正则类型
    //     if (obj instanceof RegExp) return new RegExp(obj);
    //     // 普通值或函数不需要深拷贝
    //     if (typeof obj !== "object") return obj;
    //     // 对象进行深拷贝
    //     if (hash.has(obj)) return hash.get(obj);
    //     let cloneObj = new obj.constructor();
    //     // 找到的是所属类原型上的constructor,而原型上的 constructor指向的是当前类本身
    //     hash.set(obj, cloneObj);
    //     for (let key in obj) {
    //         if (obj.hasOwnProperty(key)) {
    //             // 实现一个递归拷贝
    //             cloneObj[key] = deepClone(obj[key], hash);
    //         }
    //     }
    //     return cloneObj;
    // }

   

</script>

</html>